package com.chen10.gobang.mapper;

import com.chen10.gobang.model.pojo.User;
import com.chen10.gobang.model.vo.UserInfoVO;
import com.chen10.gobang.model.vo.UserRankingVO;
import com.chen10.gobang.model.vo.UserSearchVO;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface UserMapper {
    //根据邮箱查询
    User selectByEmail(String email);

    //更新最后登录时间
    void updateLastLoginTime(Integer userId, LocalDateTime now);

    //插入用户
    void insert(User user);

    void updatePasswordByEmail(String email, String newPassword);

    /**
     * 根据用户名搜索用户
     * @param username
     * @return
     */
    List<UserSearchVO> searchByUsername(String username);

    /**
     * 根据邮箱搜索用户
     * @param email
     * @return
     */
    UserSearchVO searchByEmail(String email);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    UserInfoVO getUserInfoById(Integer userId);

    /**
     * 更新用户名
     * @param userId
     * @param username
     */
    void updateUsername(Integer userId, String username);

    /**
     * 根据id查询用户
     * @param userId
     * @return
     */
    User selectById(Integer userId);

    /**
     * 更新头像
     * @param userId
     * @param avatarUrl
     */
    void updateAvatarByUserId(Integer userId, String avatarUrl);

    /**
     * 获取用户数量
     * @return
     */
    int getCount();

    /**
     * 获取排行榜分页
     * @param offset
     * @param size
     * @return
     */
    List<UserRankingVO> getRankingPage(int offset, int size);


    /**
     * 增加用户积分
     * @param userId
     * @param score
     */
    void addScoreById(Integer userId, Integer score);
}
